package com.znsd.zl.house.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.znsd.zl.house.entity.HouseImage;
import com.znsd.zl.house.entity.RentEntity;
import com.znsd.zl.house.entity.vo.RentRespVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @ClassName RentDao
 * @Description 描述
 * @author zhubin
 * @date 2020-08-21 10:49:33
 * @Version v1.0
 */
@Mapper
public interface RentDao extends BaseMapper<RentEntity> {
	/**
	 * 条件查询分页
	 * @param params 查询数据
	 * @param startNum 开始数量
	 * @param size      数量
	 * @param house 范围查询条件
	 * @return  封装查询对象
	 */
	List<RentRespVO> conditionQueryPage(@Param("params")Map<String,Object> params, @Param("startNum") Integer startNum, @Param("size") Integer size, @Param("house") RentRespVO house);

	/**
	 * 条件查询分页
	 * @param params 查询数据
	 * @param startNum 开始数量
	 * @param size      数量
	 * @param house 范围查询条件
	 * @return  封装查询对象
	 */
	List<RentRespVO> conditionQueryAll(@Param("params")Map<String,Object> params, @Param("startNum") Integer startNum, @Param("size") Integer size, @Param("house") RentRespVO house);


	/**
	 * 条件查询获取所有总数
	 * @param params 查询数据
	 * @param house 范围查询条件
	 * @return  查询到的行数
	 */
	Integer conditionQueryTotal(@Param("params")Map<String,Object> params, @Param("house") RentRespVO house);

	/**
	 * 条件查询获取所有总数
	 * @param params 查询数据
	 * @param house 范围查询条件
	 * @return  查询到的行数
	 */
	Integer conditionQueryAllTotal(@Param("params")Map<String,Object> params, @Param("house") RentRespVO house);

	/**
	 *  租房信息推送
	 * @param districtName  区域名称
	 * @param startNum  获取开始数
	 * @param size      获取多少条数据
	 * @return
	 */
	List<RentRespVO> push(@Param("districtName") String districtName,@Param("startNum") Integer startNum, @Param("size") Integer size);

	/**
	 * 根据房屋id查询图片
	 * @param houseId 房屋id
	 * @return  返回所有图片
	 */
	List<String> findHouseImage(Integer houseId);

	/**
	 * 根据房屋id查询图片
	 * @param houseId 房屋id
	 * @return  返回所有图片对象
	 */
	List<HouseImage> findHouseImages(Integer houseId);

	/**
	 * 根据图片id删除图片信息
	 * @param imageId  图片编号
	 */
	void deleteHouseImage(Integer imageId);

	/**
	 * 获取房屋的总盈利和出租次数
	 * @param rentId：要获取的房源出租ID
	 * @return map ：封装了总利润和出租次数
	 */
	Map findHouseProfit(Integer rentId);

	/**
	 * 根据用户Id查询用户的租房信息
	 * @param userId
	 * @return
	 */
	List<RentEntity> findUserHouse(Integer userId);


}
